-- 票档数量数据
local ticket_category_list = cjson.decode(ARGV[1])
-- 要删除的座位数据：如果是创建订单，就是要删除”未售卖的座位数据“；如果是取消订单，要删除锁定的座位id
local del_seat_list = cjson.decode(ARGV[2])
-- 要增加的座位key：如果是创建订单，要增加锁定的座位id；如果是取消订单，要增加到未售卖的座位id
local add_seat_data_list = cjson.decode(ARGV[3])

for index,increase_data in ipairs(ticket_category_list) do
    -- 票档剩余数量hash key
    local program_ticket_remain_number_hash_key = increase_data.programTicketRemainNumberHashKey
    -- 票档id
    local ticket_category_id = increase_data.ticketCategoryId
    -- 扣除的数量
    local increase_count = increase_data.count
    redis.call('HINCRBY',program_ticket_remain_number_hash_key,ticket_category_id,increase_count)
end

-- 从redis中删除座位数据
-- 创建订单操作，从未售卖座位中删除座位数据
-- 取消订单操作，从锁定座位中删除座位数据
for index, seat in pairs(del_seat_list) do
    -- 要删除座位的key
    local seat_hash_key_del = seat.seatHashKeyDel
    -- 座位id集合
    local seat_id_list = seat.seatIdList
    redis.call('HDEL',seat_hash_key_del,unpack(seat_id_list))
end

-- 从redis中添加座位数据
-- 创建订单操作，座位数据添加到锁定座位中
-- 取消订单操作，座位数据添加到未售卖座位中
for index, seat in pairs(add_seat_data_list) do
    local seat_hash_key_add = seat.seatHashKeyAdd
    local seat_data_list = seat.seatDataList
    redis.call('HMSET',seat_hash_key_add,unpack(seat_data_list))
end